/**
 * 不可逆哈希（SHA-256）
 * @param {string} str - 任意字符串
 * @returns {Promise<string>} 十六进制哈希值
 */
export async function sha256(str) {
    const buf = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(str))
    return [...new Uint8Array(buf)].map(b => b.toString(16).padStart(2, '0')).join('')
}

/* 自测 */
// sha256('abc').then(console.log) // ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad